#include<iostream>
#include<string>
using namespace std;
const int N=10,M=110;
int ans[M];
int v[N][N];
int f[N];
string s;
int k;
void floyed()
{
	for(int k=0;k<=9;k++){
		for(int i=0;i<=9;i++){
			for(int j=0;j<=9;j++){
				v[i][j]|=(v[i][k]&&v[k][j]);
			}
		}
	}
}
int main()
{
	cin>>s>>k;
	while(k--){
		int a,b;
		cin>>a>>b;
		v[a][b]=1;
	}
	for(int i=0;i<=9;i++)v[i][i]=1;
	floyed();
	for(int i=0;i<=9;i++){
		for(int j=0;j<=9;j++){
			if(v[i][j])f[i]++;
		}
	}
    //for(int i=0;i<=9;i++){
	//	cout<<"i==="<<i<<"   f[i]==="<<f[i]<<endl;
	//}
    ans[1]=1;
	int n=s.size();
	for(int i=0;i<n;i++){
		for(int j=1;j<=100;j++){
			ans[j]*=f[(s[i]-'0')];
		}
		for(int j=1;j<=100;j++){
			if(ans[j]>=10){
				ans[j+1]+=ans[j]/10;
				ans[j]%=10;
			}
		}
	}
    /*for(int i=1;i<=100;i++){
		cout<<ans[i];
	}
    cout<<endl;*/
    int len=100;
	while(!ans[len])len--;
	for(int i=len;i>=1;i--){
		cout<<ans[i];
	}
	return 0;
}
